home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Present…ry 5: (Reseller Edition) / Apple Reference & Presentations Library 5.0 (Reseller Edition).iso / 3-Presentations / Apple Demos / Networking & Comm / HyperMovies / CL⁄1 / CL_1 / stack.txt < prev   
Text File  |  1990-08-19  |  10KB  |  374 lines

  1. -- stack: in
  2. -- format: 8 (HyperCard 1)
  3. -- flags: 0x1000 (none)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=0, y1=0, x2=0, y2=0)
  7. -- screen: Rect(x1=0, y1=0, x2=0, y2=0)
  8. -- card dimensions: w=0 h=0
  9. -- scroll: x=0 y=0
  10. -- background count: 7
  11. -- first background id: 6049
  12. -- card count: 41
  13. -- first card id: 5615
  14. -- list block id: 22172
  15. -- print block id: 10470
  16. -- font table block id: 0
  17. -- style table block id: 0
  18. -- free block count: 9
  19. -- free size: 16096 bytes
  20. -- total size: 262144 bytes
  21. -- stack block size: 9216 bytes
  22. -- created by hypercard version: 0x00000000
  23. -- compacted by hypercard version: 0x01228000
  24. -- modified by hypercard version: 0x01228000
  25. -- opened by hypercard version: 0x01258000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0x0
  67. ----- HyperTalk script -----
  68. -- Demo Stack b1.3
  69. -- 9 Feb 88
  70. -- Sioux Lacy, David Donaldson, Wayne Robertson
  71.  
  72. -- Demo Stack 2.0a13
  73. -- Last Modification: 4/27/88
  74. -- Modified by Mike Chiang
  75.  
  76. on domenu menu                       --// Added by Medior, Inc. 2/20/90
  77.   global RPStackName
  78.   if menu is in "Home,Quit HyperCard" and RPStackName is not empty then
  79.     set cursor to watch
  80.     put RPStackName into shortname
  81.     repeat until offset(":",shortname) = 0
  82.       delete char 1 to offset(":",shortname) of shortname
  83.     end repeat
  84.     delete last char of shortname
  85.     answer "This will return to "&shortname&"." with "Cancel" or "OK"
  86.     if it is "Cancel" then exit domenu
  87.     set cursor to watch
  88.     lock screen
  89.     go RPStackName
  90.     unlock screen with dissolve
  91.     exit domenu
  92.   else pass doMenu
  93. end domenu
  94.  
  95.  
  96.  
  97. function inDebug
  98. --used mainly for trapping arrow keys
  99. return (the shiftKey is down and the optionKey is down)
  100. end inDebug
  101.  
  102. function debug
  103. --used for turning on and off the debugging traps
  104. --return true if the debugging is turned on
  105. --return false if the debugging is turned off
  106. return false
  107. end debug
  108.  
  109.  
  110. function stripSpaces string
  111. get offset (return, string)
  112. if it is not 0 then put empty into char it of string
  113. repeat
  114.   get offset (" ", string)
  115.   if it is 0 then return string
  116.   put empty into char it of string
  117. end repeat
  118. end stripSpaces
  119.  
  120. on openStack
  121.   if the version < 1.2 then
  122.     set lockMessages to true
  123.     answer "This stack requires HyperCard 1.2 or higher."
  124.     go home
  125.     set lockMessages to true
  126.     exit to HyperCard
  127.   end if
  128.  
  129.   --check if the stack is lock
  130.   set cantModify of this stack to false
  131.   if (the cantModify of this stack) then
  132.     set lockMessages to true
  133.     answer "Please unlock this stack in the Finder."
  134.     go home
  135.     set lockMessages to true
  136.     exit to HyperCard
  137.   end if
  138.  
  139.   global QuotaHasChanged,connectMode,barMargin,barWidth, botMargin,sideMargin
  140.   set userLevel to 5
  141.   set powerKeys to true
  142.   set blindTyping to false
  143.   put 15 into barMargin
  144.   put 15 into botMargin
  145.   put 15 into sideMargin
  146.   put 60 into barWidth
  147.  
  148.   put "Simulation" into connectMode --default
  149.  
  150.   --get the connection mode
  151.   --if connectMode is empty then
  152.   --get the connection mode
  153.   --set lockScreen to true
  154.   --set lockMessages to true
  155.   --push card
  156.   --go card "Connect Setup"
  157.   --put number of card buttons into numOptions
  158.   --repeat with i = 1 to numOptions
  159.   --if highlight of card button i then
  160.   --put short name of card button i into connectMode
  161.   --exit repeat
  162.   --end if
  163.   --end repeat
  164.   -- pop card
  165.   --set lockScreen to false
  166.   --set lockMessages to false
  167.   --end if
  168.   if connectMode is empty then put "Simulation" into connectMode
  169.   go to card "Connect Setup"
  170.  
  171.   --put false into QuotaHasChanged
  172.   --if the optionKey is not down then
  173.   -- hide menuBar
  174.   -- hide message box
  175.   --hide tool window
  176.   --hide pattern window
  177.   --go to card "Map of Regions"
  178.   --set cursor to 4
  179.   --send "RetrieveAllData" to bkgnd "Map"
  180.   --end if
  181. end openStack
  182.  
  183. on closeStack
  184.   set lockScreen to true
  185.   push card
  186.   go to card "Map of Regions"
  187.   send "EraseMap" to bkgnd "Map"
  188.   send "DisconnectFromVax" to bkgnd "Region Data"
  189.   hide field "status"
  190.   hide field "status backdrop"
  191.   choose browse tool
  192.   pop card
  193.   set lockScreen to false
  194. end closeStack
  195.  
  196. function repInfo repNum
  197. --given a rep number, return office_num,quota,sales,percent,last_name
  198. if repNum is empty then return empty
  199. put 1 into cdNum
  200. repeat
  201.   put short id of card cdNum of background "Region Data" into myID
  202.   get itemOffset(repNum,field "rep_nr" of card id myID)
  203.   if it > 0 then exit repeat
  204.   if cdNum = number of cards of background "Region Data"
  205.   then exit repeat
  206.   add 1 to cdNum
  207. end repeat
  208. if it = 0 then return empty
  209. put the short name of card id myID into myName
  210. if myName is "All Regions" then return empty
  211.  
  212. put word 2 of myName into line 1 of data
  213. put item it of field "quota" of card id myID into line 2 of data
  214. put item it of field "sales" of card id myID into line 3 of data
  215. put item it of field "percent" of card id myID into line 4 of data
  216. put item it of field "last_name" of card id myID into line 5 of data
  217.  
  218. return data
  219. end repInfo
  220.  
  221. on arrowKey
  222.   if inDebug() then pass arrowKey
  223. end arrowKey
  224.  
  225. function maxItem itemList
  226. put 0 into largest
  227. repeat with i = 1 to the number of items in itemList
  228.   if item i of itemList > largest then
  229.     put item i of itemList into largest
  230.   end if
  231. end repeat
  232. return largest
  233. end maxItem
  234.  
  235. function addComma moneyItem
  236. if moneyItem contains "," then return moneyItem
  237. get the number of chars in moneyItem
  238. if it > 6 then put "," after char (it-6) of moneyItem
  239. return moneyItem
  240. end addComma
  241.  
  242. function addDecimal moneyItem
  243. if moneyItem contains "." then return moneyItem
  244. return moneyItem & ".00"
  245. end addDecimal
  246.  
  247. function deleteComma dataItem
  248. get offset (",", dataItem)
  249. if it is not 0 then put empty into char it of dataItem
  250. return dataItem
  251. end deleteComma
  252.  
  253. function regionNumber cardName
  254. return word 2 of cardName
  255. end regionNumber
  256.  
  257. function RegionalRepNums regionNum
  258. put "Region" && regionNum into cardName
  259. return field "rep_nr" of card cardName
  260. end RegionalRepNums
  261.  
  262. function RegionalNames regionNum
  263. put "Region" && regionNum into cardName
  264. return field "last_name" of card cardName
  265. end RegionalNames
  266.  
  267. function RegionalFigures regionNum
  268. put "Region" && regionNum into cardName
  269. return field "sales" of card cardName
  270. end RegionalFigures
  271.  
  272. function RegionalPercents regionNum
  273. put "Region" && regionNum into cardName
  274. return field "percent" of card cardName
  275. end RegionalPercents
  276.  
  277. function AllRegionSales
  278. return field "sales" of card "All Regions"
  279. end AllRegionSales
  280.  
  281. function AllRegionNums
  282. return field "office_nr" of card "All Regions"
  283. end AllRegionNums
  284.  
  285. function AllRegionQuotas
  286. return field "quota" of card "All Regions"
  287. end AllRegionQuotas
  288.  
  289. -- This function doesn't appear to work
  290. function ThisRegionData regionNum
  291. put AllRegionNums() into regions
  292. put itemOffset (regionNum, regions) into itemNum
  293. put item itemNum of field "quota" of card "All Regions" & "," into data
  294. put item itemNum of field "sales" of card "All Regions" after data
  295. return data
  296. end ThisRegionData
  297.  
  298. on DrawLargeBar area,percent
  299.   --draw the large bars that are in the region & rep cards
  300.   --the bar‚Äôs width is barWidth; sideMargin is not used here.
  301.   global barWidth,botMargin
  302.   set cursor to watch
  303.   put item 1 of area into x1
  304.   put item 3 of area into x2
  305.   put item 2 of area into y1
  306.   put item 4 of area into y2
  307.  
  308.   get (x2 - x1 - barWidth) div 2
  309.   put x1 + it into item 1 of area
  310.   put x1 + it + barWidth into item 3 of area
  311.  
  312.   get y2 - botMargin
  313.   put it - round ((it - y1) * percent / 100) into item 2 of area
  314.   put it into item 4 of area
  315.  
  316.   reset paint
  317.   set lineSize to 1
  318.   set filled to true
  319.   DrawSingleBar area
  320.   choose browse tool
  321. end DrawLargeBar
  322.  
  323. on DrawSingleBar area
  324.   --draw a bar of specified area
  325.   --assume the paint settings have been pre-set.
  326.   choose select tool
  327.   drag from (item 1 to 2 of area) to (item 3 to 4 of area)
  328.   doMenu "Opaque"
  329.   set pattern to 12
  330.   doMenu Fill
  331.   wait 10
  332.   set pattern to 22
  333.   doMenu Fill
  334.   wait 10
  335.   set pattern to 14
  336.   doMenu Fill
  337. end DrawSingleBar
  338.  
  339. on adjustFrameHeight
  340.   --answer "Can't handle that large a % yet, but we will." with "OK"
  341.   --exit to HyperCard
  342. end adjustFrameHeight
  343.  
  344. -- Convert percents to 1 digit of precision
  345. function formatPercent num
  346. get offset (".", num)
  347. put empty into char it+2 to 16 of num
  348. return num & "%"
  349. end formatPercent
  350.  
  351. function itemOffset anItem, list
  352. repeat with i = 1 to the number of items in list
  353.   if item i of list = anItem then return i
  354. end repeat
  355. return 0
  356. end itemOffset
  357.  
  358. function lineOffset myLine, list
  359. repeat with i = 1 to the number of lines in list
  360.   if line i of list = myLine then return i
  361. end repeat
  362. return 0
  363. end lineOffset
  364.  
  365. function addQuotes string
  366. return quote & string & quote
  367. end addQuotes
  368.  
  369. on openCard
  370.   hide menubar
  371. end openCard
  372.  
  373.  
  374.